var util = require('./utils/util')
var request = require('./utils/request.js');
var login = require('./utils/login.js');
// var QQMapWX = require('./utils/qqmap-wx-jssdk.min.js');
// var qqmapsdk;
//app.js
App({
  onLaunch: function () {

    let that = this
    that.request = request
    that.util = util
    that.login = login

    // 展示本地存储能力
    // 登录
    // wx.login({
    //   success: res => {
    //     // 发送 res.code 到后台换取 openId, sessionKey, unionId
    //   }
    // })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        // 用户信息方面
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              console.log('已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框');
              // 如果已经登录  调用login的获取token接口
              login.loginByWeixin(res.userInfo).then(res => {
                this.globalData.userInfo = res.data.data.userInfo
              })
              // 可以将 res 发送给后台解码出 unionId
              if (res.errMsg == "getUserInfo:ok") {
                this.globalData.hasLogin = true
              }
              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
        // 地理位置方面
        // res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面
        // res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权
        // res.authSetting['scope.userLocation'] == true    表示 地理位置授权
        if (res.authSetting['scope.userLocation'] != undefined && res.authSetting['scope.userLocation'] != true) {
          wx.showModal({
            title: '请求授权当前位置',
            content: '需要获取您的地理位置，请确认授权',
            success: function (res) {
              if (res.cancel) {
                wx.showToast({
                  title: '拒绝授权',
                  icon: 'none',
                  duration: 1000
                })
              } else if (res.confirm) {
                wx.openSetting({
                  success: function (dataAu) {
                    if (dataAu.authSetting["scope.userLocation"] == true) {
                      wx.showToast({
                        title: '授权成功',
                        icon: 'success',
                        duration: 1000
                      })
                      //再次授权，调用wx.getLocation的API

                    } else {
                      wx.showToast({
                        title: '授权失败',
                        icon: 'none',
                        duration: 1000
                      })
                    }
                  }
                })
              }
            }
          })
        } else if (res.authSetting['scope.userLocation'] == undefined) {
          //调用wx.getLocation的API
          wx.getLocation({
            success(res) {
              // 1.2 获取用户位置成功后，将会返回 latitude, longitude 两个字段，代表用户的经纬度位置
              console.log(res)

              // 1.3 将获取到的 经纬度传值给 getAddress 解析出 具体的地址
              // vm.getAddress(res.latitude, res.longitude)
            }
          })
        } else {
          //调用wx.getLocation的API
          wx.getLocation({
            success(res) {
              // 1.2 获取用户位置成功后，将会返回 latitude, longitude 两个字段，代表用户的经纬度位置
              console.log(res)

              // 1.3 将获取到的 经纬度传值给 getAddress 解析出 具体的地址
              // vm.getAddress(res.latitude, res.longitude)
            }
          })
        }
      }
    })
    //控制授权登入        没写完
    userlogin: (page) => {
      if (this.globalData.userInfo.openid == '' || !this.globalData.userInfo.openid) {

        if (page) {
          return true
        } else {
          wx.navigateTo({
            url: 'pages/login/login'
          })
        }
      } else {
        console.log(this.globalData.userInfo)
      }
    }
  },
  onShow: function () {
    console.log('onShow');
  },
  // 微信获得经纬度
  getLocation: function () {
    let vm = this;
    wx.getLocation({
      type: 'wgs84',
      success: function (res) {
        console.log(JSON.stringify(res))
        var latitude = res.latitude
        var longitude = res.longitude
        var speed = res.speed
        var accuracy = res.accuracy;
        vm.getLocal(latitude, longitude)
      },
      fail: function (res) {
        console.log('fail' + JSON.stringify(res))
      }
    })
  },
  // 获取当前地理位置
  getLocal: function (latitude, longitude) {
    let vm = this;
    qqmapsdk.reverseGeocoder({
      location: {
        latitude: latitude,
        longitude: longitude
      },
      success: function (res) {
        console.log(JSON.stringify(res));
        let province = res.result.ad_info.province
        let city = res.result.ad_info.city
        vm.setData({
          province: province,
          city: city,
          latitude: latitude,
          longitude: longitude
        })

      },
      fail: function (res) {
        console.log(res);
      },
      complete: function (res) {
        // console.log(res);
      }
    });
  },
  // 未登录获取字典   // mobileUser/dictType/{dictType}
  //退出登录
  getDict(dictCode) {
    return new Promise((resolve, reject) => {
      var postObj = {
        url: '/mobile/dictType/' + dictCode,
        method: 'get'
      }
      request.loginRequest(postObj).then(res => {
        if (res.data.code === 200) {
          resolve(res)
        }
      })
    })
  },
  // 回显数据字典
  selectDictLabel(datas, value) {
    var actions = [];
    Object.keys(datas).map((key) => {
      if (datas[key].dictValue == ('' + value)) {
        actions.push(datas[key].dictLabel);
        return false;
      }
    })
    return actions.join('');
  },
  //检验是否登录的方法
  checkHasLogin() {
    if (this.globalData.hasLogin == true) {
      return true
    } else {
      wx.navigateTo({
        url: '/pages/login/login',
      })
      return false
    }
  },
  globalData: {
    hasLogin: false,
    userInfo: null,
    checkArr: ['pages/information/information', 'pages/entrance/entrance'], //需要认证登录才能访问的页面
  },
  transformObject: function (key, value) {
    var obj = {};
    obj[key] = value
    return obj;
  },
})